﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Claro.QuestionModel
{
    public class clsGrupo
    {
        public int codGrupo { get; set; }

        public string maquina { get; set; }

        public string nmGrupo { get; set; }

        public List<clsAluno> Alunos {get; set;}

        public clsGrupo()
        {
            this.Alunos = new List<clsAluno>();
        }

        public void Criar(int codEvento)
        {
            SqlConnection cn = clsConexao.Conectar();
            SqlCommand cmd= cn.CreateCommand();
            cmd.CommandText = "INSERT GRUPO (codEvento, nmGrupo) values (@codEvento, @nmGrupo)";
            cmd.Parameters.Add("@codEvento",SqlDbType.Int).Value = codEvento;
            cmd.Parameters.Add("@nmGrupo", SqlDbType.VarChar, 20).Value = this.nmGrupo;
            cmd.ExecuteNonQuery();

            cmd = cn.CreateCommand();
            cmd.CommandText = "SELECT @@Identity";
            this.codGrupo = Int32.Parse(cmd.ExecuteScalar().ToString());

            foreach (clsAluno aluno in this.Alunos)
            {
                cmd = cn.CreateCommand();
                cmd.CommandText = "INSERT AlunoGrupo (codAluno, codGrupo) values (@codAluno, @codGrupo)";
                cmd.Parameters.Add("@codAluno", SqlDbType.Int).Value = aluno.codAluno;
                cmd.Parameters.Add("@codGrupo", SqlDbType.Int).Value = this.codGrupo;
                cmd.ExecuteNonQuery();
            }

            cn.Close();
            cn.Dispose();
        }

        public static List<clsGrupo> ListarGruposEvento(clsEvento evento)
        {
            List<clsGrupo> grupos = new List<clsGrupo>();
            SqlConnection cn = clsConexao.Conectar();
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandText = "select codGrupo, nmGrupo from grupo where codevento = @codevento";
            cmd.Parameters.Add("@codEvento", SqlDbType.Int).Value = evento.codEvento;
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                clsGrupo grupo = new clsGrupo();
                grupo.codGrupo = dr.GetInt32(dr.GetOrdinal("codgrupo"));
                grupo.nmGrupo = dr.GetString(dr.GetOrdinal("nmGrupo"));
                grupo.Alunos = clsAluno.SelecionarAlunosGrupo(grupo.codGrupo);
                grupos.Add(grupo);
            }

            cn.Close();
            cn.Dispose();
            return grupos;
        }

        public void ResponderQuestao(clsQuestao questao)
        {
            questao.Responder(this.codGrupo);
        }

        public void InformarMaquina()
        {
            this.maquina = System.Environment.MachineName;
            string sql = "update grupo set Maquina = @Maquina where codGrupo = @codGrupo";
            SqlConnection cn = clsConexao.Conectar();
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandText = sql;
            cmd.Parameters.Add("@Maquina", SqlDbType.VarChar, 20).Value = this.maquina;
            cmd.Parameters.Add("@codGrupo", SqlDbType.Int).Value = this.codGrupo;
            cmd.ExecuteNonQuery();
            cn.Close();
            cn.Dispose();
        }
    }
}
